//
//  YDEmoticonTools.swift
//  YDWeibo01
//
//  Created by suibian on 16/8/19.
//  Copyright © 2016年 iitcast. All rights reserved.
//

import UIKit
//最多显示的列
    let YDEmoticonMaxCol = 7
//最多显示的行数
    let YDEmoticonMaxRow = 3
//最多显示的表情个数
    let YDEmoticonMaxCount = YDEmoticonMaxCol*YDEmoticonMaxRow - 1

class YDEmoticonTools: NSObject {
//全局访问点
    static let shareTools:YDEmoticonTools = YDEmoticonTools()
//     读取bundle文件
    lazy var emoticonBundle:NSBundle = {
    
        //    路径
        let path = NSBundle.mainBundle().pathForResource("Emoticons.bundle", ofType: nil)!
        return NSBundle(path: path)!
    }()
//    默认表情一维数组
    lazy var defaultEmoticons:[YDEmoticonModel] = {
        return self.getEmoticonWithPath("default")
    }()
//    emoji
    lazy var emojiEmoticons:[YDEmoticonModel] = {
        return self.getEmoticonWithPath("emoji")
    }()
//    浪小花
    lazy var lxhEmoticons:[YDEmoticonModel] = {
        return self.getEmoticonWithPath("lxh")
    }()
    
//    三维数组
    lazy var allEmoticons:[[[YDEmoticonModel]]] = {
        return[
            self.getEmoticonGroupsWithEmoticon(self.defaultEmoticons),
            self.getEmoticonGroupsWithEmoticon(self.emojiEmoticons),
            self.getEmoticonGroupsWithEmoticon(self.lxhEmoticons)
        
        ]
    
    }()
  
//   一维数组转为二维数组
    func getEmoticonGroupsWithEmoticon(emoticons:[YDEmoticonModel])->[[YDEmoticonModel]]{
//        创建一个可变的二维临时数组
        var tmpArray:[[YDEmoticonModel]] = [[YDEmoticonModel]]()
//        获取最多显示的页数
        let pageCount = (emoticons.count + YDEmoticonMaxCount - 1)/YDEmoticonMaxCount
//        便利页数
        for i in 0..<pageCount{
        
            var length = YDEmoticonMaxCount
            let location = i*YDEmoticonMaxCount
//            有108个 到最后只有[100,8]   [100,20]会越界
            if location + length > emoticons.count{
                length = emoticons.count - location
            
            }
            //        范围
            let range = NSRange(location: location, length: length)
            
            //        数组截取
            let array = (emoticons as NSArray).subarrayWithRange(range) as![YDEmoticonModel]
//            添加一维数组
            tmpArray.append(array)
            
        }
        return tmpArray
    }
    
//    读取plist文件 获取一维数组
    func getEmoticonWithPath(path:String)->[YDEmoticonModel]{
        let file = emoticonBundle.pathForResource("\(path)/info.plist", ofType: nil)!
        let array = NSArray(contentsOfFile: file)!
        //        创建临时数组
        var tmpArray:[YDEmoticonModel] = [YDEmoticonModel]()
        //        遍历数组字典转模型
        for dic in array{
            //        创建模型
            let model = YDEmoticonModel(dict: dic as! [String:AnyObject])
//            设置路径 等与传进来的路径
            model.path = "\(path)/"
            //            添加到数组
            tmpArray.append(model)
        }
        return tmpArray

    }
//  遍历当前的默认图片数组 和 浪小花数组 
    func searchEmoticonInDefaultEmoticonsOrLxhEmoticons(chs:String)->YDEmoticonModel?{
        for emoticonModel in defaultEmoticons{
//            判断外界传入的chs和当前的chs是否相等
            if emoticonModel.chs == chs{
                return emoticonModel
            }
        
        }
//    便利浪小花表情
        for emoticonModel in lxhEmoticons{
            //            判断外界传入的chs和当前的chs是否相等
            if emoticonModel.chs == chs{
                return emoticonModel
            }
            
        }
//        代表没有该模型
        return nil
    }
    }
    

    

